package javaCode.chapter09.innerclass;

public class MemberInnerClass01 {
    public static void main(String[] args) {
        Outer07 outer07 = new Outer07();
        outer07.t1();

        //外部其他类，使用成员内部类的三种方式
        //解读
        //第一种方式
        // outer07.new Inner07(); 相当于把 nwe Inner07() 当作 outer07的一个成员
        Outer07.Inner07 inner07 = outer07.new Inner07(); //把它看作一个成员
        inner07.say();

        //第二种方式 在外部类中，编写一个方法，可以返回 Inner08对象
        Outer07.Inner07 inner07Instance = outer07.getInner07Instance();
        inner07Instance.say();

        Outer07.Inner07 inner071 = new Outer07().new Inner07();


    }
}

class Outer07{ //外部类
    private int n1 = 10;
    public String name = "张飞";

    //1. 注意：成员内部类，是定义在成员的位置上
    //2. 可以添加任何的访问访问修饰符，因为它的地位是 一个成员
    class Inner07{ //成员内部类
        private double sal = 11.1;
        public void say(){
            //可以访问外部类的所有成员，包含私有的
            System.out.println("Outer07 n1=" + n1 + " name=" + name);
        }
    }

    //该方法返回 一个成员内部类的实例
    public Inner07 getInner07Instance(){
        return new Inner07();
    }

    //写方法
    public void t1(){
        //使用了成员内部类
        Inner07 inner07 = new Inner07();
        inner07.say();
        System.out.println(inner07.sal);
    }
}
